// 用户模块 - 处理用户信息相关操作
import baseAPI from './base.js'

class UserAPI {
    // 搜索用户
    async searchUsers(keyword) {
        return baseAPI.request(`/users/search?keyword=${encodeURIComponent(keyword)}`, {
            method: 'GET'
        });
    }

    // 获取用户信息（通过邮箱查询）
    async getUserInfo(email) {
        return baseAPI.request(`/users/${email}`, {
            method: 'GET'
        });
    }

    // 根据用户ID获取用户信息
    async getUserById(userId) {
        return baseAPI.request(`/users/id/${userId}`, {
            method: 'GET'
        });
    }

    // 更新用户信息
    async updateUserInfo(email, userData) {
        return baseAPI.request(`/users/${email}`, {
            method: 'PUT',
            body: JSON.stringify(userData)
        });
    }

    // 更新用户头像
    async updateAvatar(email, avatarURL) {
        console.log('头像上传请求:', {
            email: email,
            avatarLength: avatarURL ? avatarURL.length : 0
        });
        
        return baseAPI.request('/users/avatar', {
            method: 'POST',
            body: JSON.stringify({
                email: email,
                avatar: avatarURL
            })
        });
    }

    // 获取用户数量
    async getUserCount() {
        return baseAPI.request('/users/count', {
            method: 'GET'
        });
    }

    // 获取用户设置
    async getUserSettings(email) {
        return baseAPI.request(`/users/${email}/settings`, {
            method: 'GET'
        });
    }

    // 更新用户设置
    async updateUserSettings(email, settings) {
        return baseAPI.request(`/users/${email}/settings`, {
            method: 'PUT',
            body: JSON.stringify(settings)
        });
    }

    // 通过邮箱获取用户信息（别名方法）
    async getUserByEmail(email) {
        return baseAPI.request(`/users/${email}`, {
            method: 'GET'
        });
    }

    // 获取用户ID（优先使用本地ID，如果没有则通过邮箱查询）
    async getUserId(userData) {
        // 如果本地有有效的ID，直接返回
        if (userData.id && userData.id !== 'undefined' && userData.id !== undefined) {
            return userData.id;
        }
        
        // 如果没有ID但有邮箱，通过邮箱查询
        if (userData.email) {
            try {
                console.log('通过邮箱查询用户ID:', userData.email);
                const response = await this.getUserByEmail(userData.email);
                if (response.code === 'SUCCESS' && response.data) {
                    const userId = response.data.id;
                    console.log('通过邮箱查询到用户ID:', userId);
                    
                    // 更新本地存储的用户数据，添加ID
                    const updatedUserData = { ...userData, id: userId };
                    uni.setStorageSync('currentUser', JSON.stringify(updatedUserData));
                    console.log('已更新本地用户数据，添加ID:', userId);
                    
                    return userId;
                }
            } catch (error) {
                console.log('通过邮箱查询用户ID失败:', error);
            }
        }
        
        // 如果都失败了，返回null
        console.log('无法获取用户ID');
        return null;
    }

    // ==================== 本地存储辅助方法 ====================

    // 本地用户存取
    getLocalUsers() {
        return JSON.parse(uni.getStorageSync('users') || '[]');
    }
    
    saveLocalUsers(users) {
        uni.setStorageSync('users', JSON.stringify(users));
    }

    // 获取本地用户数量
    getLocalUserCount() {
        const users = this.getLocalUsers();
        return users.length;
    }

    // 生成离线ID
    generateOfflineId() {
        return Date.now().toString();
    }
    
    // 生成用户ID（支持64位整数）
    generateUserId() {
        const timestamp = Date.now();
        return timestamp.toString();
    }
}

// 创建全局实例
const userAPI = new UserAPI();

export default userAPI; 